import Vue from 'vue'
import App from './App.vue'
Vue.config.productionTip = false

// 将三级联动商品分类组件注册为全局组件，全局组件最好放在 components文件夹下
import TypeNav from '@/components/TypeNav'
// 第一个参数：组件的名字，第二个参数：组件
Vue.component(TypeNav.name,TypeNav)

// 将轮播图注册为全局组件
import Carousel from '@/components/Carousel'
Vue.component(Carousel.name,Carousel)
// 将分页器注册为全局组件
import Pagination from '@/components/Pagination'
Vue.component(Pagination.name,Pagination)

// 引入仓库
import store from '@/store'
import router from '@/router'

// 引入mock数据
import '@/mock/mockServe.js'

// 引入swiper样式
import 'swiper/css/swiper.min.css'

// 引入utils，生成游客临时的uuid保存到本地存储中（获取购物车数据）
import {getUUID} from '@/utils/uuid'
getUUID()

// 引入封装的请求api (统一引入)，虽然可以这样引入，但是在state中是用不了的，因为在store中this是store
// 在正常的组件中可以使用
import * as API from '@/api'

// 引入element-ui模块 (别忘了在babel.config.js中配置)
import '@/plugins/element-ui'

// 引入图片懒加载插件
import vueLazyload from 'vue-lazyload'
import lazyloadImg from '@/assets/logo.png'
Vue.use(vueLazyload,{
  loading:lazyloadImg
})

// 演示自定义插件的使用
// import myPlugins from '@/plugins/myPlugins'
// Vue.use(myPlugins,{
//   name:'upper'
// })

// 引入vee-validate表单验证插件文件
import '@/plugins/validate'
new Vue({
  render: h => h(App),
  // 注册路由
  router,
  // 注册仓库
  store,
  // 全局事件总线
  beforeCreate(){
    Vue.prototype.$bus = this
    Vue.prototype.$API = API
  }
}).$mount('#app')

